Page({
    // 页面的初始数据
    data: {
        // 支出类别列表
        expenseCategories: [
            { name: '餐饮', icon: 'eat' },
            { name: '购物', icon: 'shopping' },
            { name: '零食', icon: 'retail' },
            { name: '水果', icon: 'fruit' },
            { name: '交通', icon: 'transport' },
            { name: '修车', icon: 'car' },
            { name: '学习', icon: 'education' },
            { name: '礼物', icon: 'gift' },
            { name: '宠物', icon: 'pet' },
            { name: '游戏', icon: 'game' },
            { name: '话费', icon: 'phone' },
            { name: '水电', icon: 'lifefee' },
            { name: '运动', icon: 'sport' },
            { name: '仪容', icon: 'skin' },
            { name: '其他', icon: 'others' },
        ],
        // 收入类别列表
        incomeCategories: [
            { name: '生活费', icon: 'salary' },
            { name: '副业', icon: 'vicejob' },
            { name: '奖金', icon: 'bonus' },
            { name: '理财', icon: 'financing' },
            { name: '其他', icon: 'other' },
        ],
        selectedCategory: '', // 选中的类别
        amount: '', // 金额
        date: '', // 日期
        type: 'expense', // 记录类型，默认为支出
        remark: '' // 备注
    },

    // 生命周期函数--监听页面加载
    onLoad: function() {
        // 设置当前日期为默认日期
        const today = new Date();
        const formattedDate = `${today.getFullYear()}-${String(today.getMonth() + 1).padStart(2, '0')}-${String(today.getDate()).padStart(2, '0')}`;
        this.setData({ date: formattedDate });
    },

    // 选择类别
    selectCategory: function(e) {
        const category = e.currentTarget.dataset.category;
        this.setData({ selectedCategory: category });
    },

    // 添加金额输入处理函数
    handleAmountInput: function(e) {
        let value = e.detail.value;

        // 移除非数字和小数点
        value = value.replace(/[^\d.]/g, '');

        // 确保只有一个小数点
        const parts = value.split('.');
        if (parts.length > 2) {
            value = parts[0] + '.' + parts.slice(1).join('');
        }

        // 限制小数位数为2位
        if (parts.length === 2 && parts[1].length > 2) {
            value = parts[0] + '.' + parts[1].substring(0, 2);
        }

        this.setData({
            amount: value
        });
    },

    // 更改日期
    changeDate: function(e) {
        this.setData({ date: e.detail.value });
    },

    // 切换类型（支出/收入）
    changeType: function(e) {
        const type = e.currentTarget.dataset.type;
        this.setData({
            type: type,
            selectedCategory: '' // 切换类型时重置选中的分类
        });
    },

    // 输入备注
    inputRemark: function(e) {
        this.setData({ remark: e.detail.value });
    },

    // 修改提交函数名，与 WXML 中的绑定保持一致
    submitForm: function() {
        const { selectedCategory, amount, date, remark, type } = this.data;

        // 检查必填字段
        if (!selectedCategory || !amount) {
            wx.showToast({
                title: '请填写完整信息',
                icon: 'none',
                duration: 2000
            });
            return;
        }

        // 检查金额是否为正数
        const numAmount = parseFloat(amount);
        if (isNaN(numAmount) || numAmount <= 0) {
            wx.showToast({
                title: '请输入大于0的金额',
                icon: 'none',
                duration: 2000
            });
            return;
        }

        // 获取已有记录
        const records = wx.getStorageSync('records') || [];

        // 创建新记录（支出为负数，收入为正数）
        const newRecord = {
            id: Date.now().toString(), // 使用时间戳作为唯一ID
            category: selectedCategory,
            amount: type === 'expense' ? -numAmount : numAmount,
            date,
            remark,
            icon: this.getDefaultIcon(selectedCategory)
        };

        // 添加新记录
        records.unshift(newRecord);

        // 保存记录
        wx.setStorageSync('records', records);

        // 显示成功提示
        wx.showToast({
            title: '添加成功',
            icon: 'success',
            duration: 1500
        });

        // 返回上一页
        setTimeout(() => {
            wx.navigateBack();
        }, 1500);
    },

    // 获取类别对应的默认图标
    getDefaultIcon: function(category) {
        const { expenseCategories, incomeCategories } = this.data;
        const allCategories = [...expenseCategories, ...incomeCategories];
        const categoryInfo = allCategories.find(item => item.name === category);
        return categoryInfo ? categoryInfo.icon : 'others';
    }
});